package com.atguigu.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import com.atguigu.entity.DistrictInfo;

import com.atguigu.entity.excel.DistrictInfoExcel;
import com.atguigu.mapper.DistrictInfoMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;

//AnalysisEventListener<DistrictInfoExcel>: 泛型作用（easyexcel读取到一行数据会转为该类型的对象 传给invoke方法）
@Component
public class ExcelVoListener extends AnalysisEventListener<DistrictInfoExcel> {

    @Autowired
    DistrictInfoMapper districtInfoMapper;
    // easyexcel解析到一行数据时回调一次此方法
    @Override
    public void invoke(DistrictInfoExcel data, AnalysisContext context) {
        /*
            完整业务：
                1、校验导入的分类数据 表中是否已存在
                    - id重复！
                    - 同一个父分类下 同名的分类！
                2、分批-批量保存
                    每加载100条记录批量保存一次
         */

        //读取到一行数据保存到数据库
        DistrictInfo districtInfo = new DistrictInfo();
        BeanUtils.copyProperties(data, districtInfo);
        districtInfo.setCreateTime(new Date());
        districtInfo.setUpdateTime(new Date());
        districtInfoMapper.insert(districtInfo);

    }
    //解析完excel文件之后再执行：收尾操作
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {

    }
}
